/*
 * AbstractTask.h
 *
 *  Created on: 2010-11-21
 *      Author: leo
 */

#ifndef ABSTRACTTASK_H_
#define ABSTRACTTASK_H_

#include "boost/date_time/gregorian/gregorian.hpp"
#include "boost/date_time/posix_time/posix_time.hpp"

using namespace boost::posix_time;
using namespace boost::gregorian;

enum Priority {
	NA	= -1,
	TRIVAL,
	NORMAL,
	MIDDLE,
	HIGH,
	URGENT,
	NOW,
	USR_DEFINE
};

namespace GTD {

class AbstractTask {
public:
	AbstractTask();
	virtual ~AbstractTask();
//	virtual Priority getPriority();
//	virtual bool setPriority(Priority p = NORMAL);
//	virtual bool cancel() = 0;
//	virtual bool cancelAt(date d, ptime t);
//	virtual bool cancelUntil(date d, ptime t);
//	virtual time_duration stillLast();
};


class TaskFactory {
public:
	virtual AbstractTask* getInstance()=0;
};

}

#endif /* ABSTRACTTASK_H_ */
